有些情况下,即使启用了方法采样,在 Code | Hot Methods标签页中也没有任何数据,最可能原因是,应用程序并没有产生的足够多的负载供采样器收集数据。方法采样器只会对那些活动的Java代码进行采样,如果整个记录过程非常短,而且线程大部分时间都在等待执行,或者闲待着,那么就根本没有机会被采样器捕捉到。如果不是在生产环境分析应用程序的话,那么需要考虑对增加应用程序的负载,模拟生产环境中的真实情况。
当启用本地方法采样时,所有的采样信息都会被存储下来,而一般情况下,只会存储Java代码的采样信息。通过采样信息,你可以会发现几乎所有的本地采样信息都来自于某个本地方法(例如ntdll.dll#KiFastSystemCallRet
),甚至系统几乎一致闲待着也是如此时。